/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.0 (2021-10-11)
 */
(function () {
    'use strict';

    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');

    var setContent = function (editor, html) {
        editor.focus();
        editor.undoManager.transact(function () {
            editor.setContent(html);
        });
        editor.selection.setCursorLocation();
        editor.nodeChanged();
    };
    var getContent = function (editor) {
        return editor.getContent({source_view: true});
    };

    var open = function (editor) {
        var editorContent = getContent(editor);
        editor.windowManager.open({
            title: 'Source Code',
            size: 'large',
            body: {
                type: 'panel',
                items: [{
                    type: 'textarea',
                    name: 'code'
                }]
            },
            buttons: [
                {
                    type: 'cancel',
                    name: 'cancel',
                    text: 'Cancel'
                },
                {
                    type: 'submit',
                    name: 'save',
                    text: 'Save',
                    primary: true
                }
            ],
            initialData: {code: editorContent},
            onSubmit: function (api) {
                setContent(editor, api.getData().code);
                api.close();
            }
        });
    };

    var register$1 = function (editor) {
        editor.addCommand('mceCodeEditor', function () {
            open(editor);
        });
    };

    var register = function (editor) {
        var onAction = function () {
            return editor.execCommand('mceCodeEditor');
        };
        editor.ui.registry.addButton('code', {
            icon: 'sourcecode',
            tooltip: 'Source code',
            onAction: onAction
        });
        editor.ui.registry.addMenuItem('code', {
            icon: 'sourcecode',
            text: 'Source code',
            onAction: onAction
        });
    };

    function Plugin() {
        global.add('code', function (editor) {
            register$1(editor);
            register(editor);
            return {};
        });
    }

    Plugin();

}());
